[#ftl]
[#import "common/macrolibs.ftl" as lib]
[#import "common/commonclass.ftl" as cls]
package ${lib.packageBase}.domain;

[#assign dateFlag=false]
[#list clazz.dynaAttributes as attr][#if (!dateFlag)&&(attr.type>5)&&(attr.type<9)]
import java.util.Date;[#assign dateFlag=true][/#if][/#list]

[#assign classMap={}][#assign sysVarUsageMap={"0":false, "1": false, "2": false, "3": false}]
[#list clazz.dynaAttributes as attr][#switch attr.type][#case 9]
[#if !classMap["${attr.refClass.id}"]??&&(attr.refClass.id!=clazz.id)]
import ${lib.packageBase}.domain.${cls.myRefClassNames["${attr.id}"]};
[#assign classMap=classMap+{"${attr.refClass.id}", true}][/#if]
[#break]
[#case 10][#if !sysVarUsageMap["1"]]
import com.smzd.framework.system.domain.Meeting;
[#assign sysVarUsageMap=sysVarUsageMap+{"1": true}][/#if][#break]
[#case 11][#if !sysVarUsageMap["2"]]
import com.smzd.framework.system.domain.Group;
[#assign sysVarUsageMap=sysVarUsageMap+{"2": true}][/#if][#break]
[#case 12][#if !sysVarUsageMap["3"]]
import com.smzd.framework.system.domain.User;
[#assign sysVarUsageMap=sysVarUsageMap+{"3": true}][/#if][#break]
[#default][/#switch][/#list]

import com.smzd.core.domain.${cls.myDomainExtends};
import com.smzd.core.annotations.ModuleGroup;
[#if clazz.ownerLevel>0&&!sysVarUsageMap["${clazz.ownerLevel}"]]
[@lib.importOwnerClass level=clazz.ownerLevel/]
[/#if]


@ModuleGroup(value="proj${project.id}", moduleNames = "${cls.myModuleNames}", moduleName="${cls.myModuleName}")
public class ${cls.mySimpleClassName} extends ${cls.myDomainExtends}${cls.myDomainParams} {
[#list clazz.dynaAttributes as attr]
    // ${attr.name}
    private ${cls.myAttrJavaTypes["${attr.id}"]} ${cls.myAttrNames["${attr.id}"]};
[/#list]
[#if (clazz.mtmRelations?size>0)]
    //专门用于进行配置标记的临时变量
    private Boolean checked;
[/#if]

[#list clazz.dynaAttributes as attr]

    /**
     * 获取${attr.name}
     * @return
     */
    public ${cls.myAttrJavaTypes["${attr.id}"]} ${cls.myGetters["${attr.id}"]}(){
        return ${cls.myAttrNames["${attr.id}"]};
    }
    
    /**
     * 设置${attr.name}
     * @param ${cls.myAttrNames["${attr.id}"]}
     */
    public void ${cls.mySetters["${attr.id}"]}(${cls.myAttrJavaTypes["${attr.id}"]} ${cls.myAttrNames["${attr.id}"]}){
        this.${cls.myAttrNames["${attr.id}"]}=${cls.myAttrNames["${attr.id}"]};
    }
[/#list]
[#if (clazz.mtmRelations?size>0)]
    
    public Boolean getChecked() {
        return checked;
    }

    public void setChecked(Boolean checked) {
        this.checked = checked;
    }
[/#if]
}